package aiyh.utils.fileUtil;

import java.util.*;

/**
 * @author EBU7-dev1-ayh
 * @create 2021/11/29 0029 13:53
 */


public class ProperUtil extends Properties {
	//LinkedHashSet有序，可以保证读取出来顺序不变
	private final LinkedHashSet<Object> keys = new LinkedHashSet<>();

	/**
	 * 读取key集合
	 */
	@Override
	public Set<String> stringPropertyNames() {
		Set<String> set = new LinkedHashSet<>();
		for (Object key : keys) {
			set.add((String) key);
		}
		return set;
	}

	@Override
	public Set<Object> keySet() {
		return keys;
	}

	/**
	 * 枚举可以直接进行遍历，但是和iterator一样，遍历过程中不能进行修改删除等操作
	 * 若要在遍历过程中进行修改擦除等操作，建议使用stringPropertyNames方法
	 */
	@Override
	public synchronized Enumeration<Object> keys() {
		return Collections.enumeration(keys);
	}

	@Override
	public synchronized Object put(Object key, Object value) {
		keys.add(key);
		return super.put(key, value);
	}

	/**
	 * 若要移除元素，要重写remove方法
	 */
	@Override
	public Object remove(Object o) {
		keys.remove(o);
		return super.remove(o);
	}
}
